package com.gitee.linmt.repository;

import com.gitee.linmt.entity.UserInfo;
import com.gitee.linmt.enums.AccountState;
import com.gitee.linmt.enums.Gender;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import javax.transaction.Transactional;
import java.util.List;

/**
 * @author <a href="mailto:lin-mt@outlook.com">lin-mt</a>
 */
@Repository
public interface UserInfoRepository extends JpaRepository<UserInfo, Long> {
    
    /**
     * 根据性别删除
     *
     * @param gender 性别
     */
    @Transactional(rollbackOn = {Exception.class})
    void deleteByGender(Gender gender);
    
    /**
     * 根据账号状态删除
     *
     * @param accountState 账号状态
     */
    @Transactional(rollbackOn = {Exception.class})
    void deleteByAccountState(AccountState accountState);
    
    /**
     * 根据性别查询
     *
     * @param gender 性别
     * @return 该性别的所有用户信息
     */
    List<UserInfo> findAllByGender(Gender gender);
    
    /**
     * 根据账号状态查询
     *
     * @param accountState 账号状态
     * @return 该状态下的所有账号
     */
    List<UserInfo> findAllByAccountState(AccountState accountState);
}
